Disclaimer

* I am sharing my personal views not the views of RenaissanceRe 
  or any of its subsidiary companies.
  
* Thought provoking only: The materials are provided for information 
  purposes only and are in summary form.
  
* This is not consulting: No representations or warranties are given. 
  If you want to use these ideas, hire a pro.
  
* This is not financial advice: No financial advice is being given 
  nor any recommendation to invest in any product. 
  
* Historical data is no assurance as to future results.

Source

QR Code Example

Quick Survey

Most Common Programming Language in Both Business and Government:

  • Reactive

  • Functional

  • REPL Environment

  • Tabular Data DSL

Build Bridges

@cmastication

Spreadsheet Challenges

  • Commingle Data, Business Logic, and Presentation

  • Changing Data is Easy & Tracking Changes is Hard

  • Versioning: Q-End_2018-Q4_final4_revised.xlsx

  • Speed and Size

  • Reads Non-linearly

Data Science Workflow

JD’s Lemma:

To migrate Excel analysts to coding, help them be better at Excel first.

If you fail to migrate them to coding, you will at least have better Excel!

Corporations Are Sad Silos

Art by Allison Horst

How do Business Analysts See Themselves…

Tools AND Training Get Analysts Over the Line

JD’s Lemma:

To migrate Excel analysts to coding, help them be better at Excel first.

If you fail to migrate them to coding, you will at least have better Excel!

Build a Culture of Good Excel Hygiene

  • Not Stylistic - Let Marketing Own That

  • Principle Based:

    • Minimize Errors

    • Maximize Readability

    • Save Time

But that Coding Environment Though…

Friction!

Energy converted to heat:

\[E_{th}=\int _{C}\mathbf {F} _{\mathrm {fric} }(\mathbf {x} )\cdot d\mathbf {x} \ =\int _{C}\mu _{\mathrm {k} }\ \mathbf {F} _{\mathrm {n} }(\mathbf {x} )\cdot d\mathbf {x} \]

Source: https://en.wikipedia.org/wiki/Friction

How To Coexist?

Example Design Pattern:

library(tidyverse)
library(openxlsx)
wb <- loadWorkbook("iris_wb.xlsx")

Write & Save

writeDataTable(
  wb = wb,
  sheet = "iris_sheet",
  x = iris,
  startCol = 1,
  startRow = 1,
  tableStyle = "TableStyleLight9",
  tableName = "iris_table")
saveWorkbook(wb = wb,
             file = "iris_wb.xlsx",
             overwrite = T)

XKCD Assumptions:

Assumption:

All time is of equal value

Reality:

Certain windows of time are precious

XKCD Assumptions:

Assumption:

Current frequency of reporting = future freq

Reality:

Once automated, reports find new uses

XKCD Assumptions:

Assumption:

All time spent doing analytics is of equal utility

Reality:

Some tasks are so awful you just can’t even…

XKCD Assumptions:

Assumption:

Automated and manual workflows produce the same product

Reality:

Manual processes breed errors

Why R & Python?

Python - Existing Code, IT adoption

R - Powerful, Approachable, Workflow from Database to Output

Example R Table Output

df_cars  %>%
  filter(hp > 90) %>%
  group_by(cyl) %>%
  summarize(avg_hp = mean(hp)) %>%
  gt() %>%
  fmt_number(columns = vars(avg_hp), decimals = 1) %>%
  tab_header(title = "What a Pretty Table!")
What a Pretty Table!
cyl avg_hp
4 99.7
6 122.3
8 209.2

Example R Plotting

ggplot(df_cars, mapping = aes(x = as.factor(cyl), y = hp)) +
  geom_boxplot()

Example R Plotting

ggplot(df_cars, mapping = aes(x = disp, y = hp)) +
  geom_point()

Render Same Source Different Output

Render Same Source Different Output

Different Languages in R Markdown

```{python}
x = 'hello, python world!'
x.split(' ')
```
## ['hello,', 'python', 'world!']
```{r}
py$x
```
## [1] "hello, python world!"

Different Languages in R Markdown

```{r}
py$x <- 'Updated in R'
```
```{python}
x.split(' ')
```
## ['Updated', 'in', 'R']

What’s the Point?

  • Excel is Your Most Used Programming Language

  • Lower the Friction to Helping Business Users Adopt Additional Tools

  • Don’t Boil the Ocean: 10% Improvement

  • Business, Automate Yourself

Art by Allison Horst: @allison_horst

All drawn digitally with Procreate on iPad…